关于 WASAPI 您所在的位置:网站首页 directsound wasapi 本地音乐音质 关于 WASAPI

关于 WASAPI

2023-09-09 10:23| 来源: 网络整理| 查看: 265

关于 WASAPI 项目 06/12/2023

Windows 音频会话 API (WASAPI) 使客户端应用程序能够管理应用程序和 音频终结点设备之间的音频数据流。

头文件 Audioclient.h 和 Audiopolicy.h 定义 WASAPI 接口。

每个音频流都是 音频会话的成员。 通过会话抽象,WASAPI 客户端可以将音频流标识为一组相关音频流的成员。 系统可以将会话中的所有流作为单个单元进行管理。

音频引擎是 用户模式音频组件, 应用程序通过该组件共享对音频终结点设备的访问。 音频引擎在终结点缓冲区和终结点设备之间传输音频数据。 若要通过呈现终结点设备播放音频流,应用程序会定期将音频数据写入呈现终结点缓冲区。 音频引擎混合来自各种应用程序的流。 若要从捕获终结点设备录制音频流,应用程序会定期从捕获终结点缓冲区读取音频数据。

WASAPI 由多个接口组成。 其中第一个是 IAudioClient 接口。 若要访问 WASAPI 接口,客户端首先通过调用 IMMDevice::Activate 方法获取对音频终结点设备的 IAudioClient 接口的引用,并将参数 iid 设置为 REFIID IID_IAudioClient。 客户端调用 IAudioClient::Initialize 方法以初始化终结点设备上的流。 初始化流后,客户端可以通过调用 IAudioClient::GetService 方法获取对其他 WASAPI 接口的引用。

如果客户端应用程序使用的音频终结点设备无效,WASAPI 中的许多方法返回错误代码AUDCLNT_E_DEVICE_INVALIDATED。 通常,应用程序可以从此错误中恢复。 有关详细信息,请参阅 从Invalid-Device错误中恢复。

WASAPI 实现以下接口。

接口 说明 IAudioCaptureClient 使客户端能够从捕获终结点缓冲区读取输入数据。 IAudioClient 使客户端能够在音频应用程序与音频引擎或音频终结点设备的硬件缓冲区之间创建和初始化音频流。 IAudioClock 使客户端能够监视流的数据速率和流中的当前位置。 IAudioRenderClient 使客户端能够将输出数据写入呈现终结点缓冲区。 IAudioSessionControl 使客户端能够配置音频会话的控制参数,并监视会话中的事件。 IAudioSessionManager 使客户端能够访问跨进程和特定于进程的音频会话的会话控件和音量控件。 IAudioStreamVolume 使客户端能够控制和监视音频流中所有声道的音量级别。 IChannelAudioVolume 使客户端能够控制流所属的音频会话中所有声道的音量级别。 ISimpleAudioVolume 使客户端能够控制音频会话的主音量级别。

 

需要会话相关事件通知的 WASAPI 客户端应实现以下接口。

接口 说明 IAudioSessionEvents 提供与会话相关的事件的通知,例如卷级别、显示名称和会话状态的更改。

 

相关主题

流管理

编程参考

 

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有